package log

import (
	"context"
)

type logContextKey struct{}

func WithContext(ctx context.Context) context.Context {
	return std.WithContext(ctx)
}

func (l *zapLogger) WithContext(ctx context.Context) context.Context {
	return context.WithValue(ctx, logContextKey{}, l)
}

func FromContext(ctx context.Context) Logger {
	if ctx != nil {
		logger := ctx.Value(logContextKey{})
		if logger != nil {
			return logger.(Logger)
		}
	}

	return WithName("Unknown-Context")
}
